package drg_group.wuhan_2022.MDC;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;

import drg_group.wuhan_2022.Base;
import drg_group.wuhan_2022.MedicalRecord;
import drg_group.wuhan_2022.ADRG.*;

public class MDCH{
    public static String group(MedicalRecord record){
        String[] mdc_zd={"K80.507","K76.809","E80.600x006","K71.102","Q27.800x004","K74.610","K85.202","B17.102","K71.600","K80.502","D01.502","K76.400","K76.500x001","B18.000","T86.400x016","K83.008","K73.100","K85.800x001","K81.101","E80.603","B18.106","K86.810","B15.001","B16.101","K83.800x012","K74.300x007+I98.2*","A52.700x007+K77.0*","K74.600x002","T86.400x004","Q44.600","K74.614","K83.804","B18.003","K76.818","K85.900x003","S36.200x021","D37.600x002","K75.400","Q45.200","K72.000x013","R17.900x001","M35.003+K77.8*","K81.005","K85.821","K86.104","B58.100+K77.0*","R93.204","B00.803+K77.0*","K80.000x002","K80.203","K82.302","K82.802","S36.100x081","Q44.500x006","T86.400x009","K83.810","K76.800x003","K80.001","D18.013","K81.001","T86.400x001","C22.200","K70.100","D37.604","Q44.200x003","K75.801","K91.840","B18.805","B66.100x001+K77.0*","K80.200x001","B25.100+K77.0*","B17.902","Q44.501","B18.001","K91.800x401","K74.300x006+I98.3*","K82.306","I86.808","D37.605","K83.200x001","B83.800x003","B17.900x002","D37.706","K85.901","K91.800x403","B67.800x001+K77.0*","B16.204","B16.100x002","D37.601","K80.201","K71.900x003","K74.400","K85.300","Q44.700x002","K75.002","Q44.703","Q85.912","K80.403","K83.019","K82.000x003","S36.200","K80.505","K83.819","B26.300+K87.1*","K71.103","B15.900","C25.802","Q27.304","B17.100x006","B16.000","K82.303","K74.600","K91.826","K85.201","E80.500","K85.301","I72.809","C22.400","K83.502","I81.x00x003","B66.300","T82.813","K83.901","K74.100","K82.200x002","R93.200x002","K80.800x001","K70.302+I98.3*","Q27.804","T85.800x802","K92.800x006","K70.001","K76.800x023","B16.903","K70.403","K76.804","D13.600","B18.801","C24.100","C45.704","K72.002","K80.305","Q44.502","A18.814+K77.0*","T86.400x011","K82.305","B18.203","K86.000","K91.800x301","K82.001","C77.203","S36.110","K80.101","K85.900x002","B18.100x007","Q45.001","K86.800x002","K76.800x026","K75.000x002","K80.504","B77.800x005","K91.800x402","K80.300x005","T86.400x017","C22.001","B65.202+K77.0*","B77.803","K83.016","K91.807","B17.803","K76.700x001","K83.307","Z52.600x001","K86.811","T86.400x006","S36.210","K91.500","T86.400x010","K83.104","R93.200x001","K83.108","Q44.701","C25.401","I87.803","Q45.100","Q45.003","K86.100x002","S36.100x031","B17.200x005","Q44.201","D13.501","K71.601","K76.817","K85.100","K83.102","K85.808","B44.803","K82.807","K86.103","K71.100x003","Q44.102","Q44.300","B18.201","Q45.002","I81.x00","K83.813","K74.618+I98.3*","C24.001","K80.500x001","K83.012","T86.400x007","K85.102","K80.000x004","K83.815","K72.001","K71.800","K83.014","C23.x00","B18.200x009","K92.800x010","S36.201","B54.x00x003+K77.0*","R93.201","T86.401","S36.101","K83.005","K74.604","K76.815","K72.004","K80.406","B16.100","C25.400","K83.303","E80.400","K86.107","K76.800x007","K75.300x001","B18.903","E85.415+K77.8*","K83.807","Q44.504","K71.100x006","C22.900","K76.001","K71.903+I98.3*","K83.017","K83.015","K80.400","C24.000x007","B15.003","C22.101","K73.800x001","K70.201","K76.803","I74.804","D13.401","K80.306","K70.305+I98.3*","K83.103","K75.806","C24.101","K74.600x031","S36.200x011","K83.007","K72.900x003+G94.3*","B18.800x005","B18.802","K76.102","K76.603","C25.701","B00.802+K77.0*","K71.100x007","D37.600x003","T86.400x005","K74.000","C25.801","K83.400x001","K85.800x003","K86.809","C22.300","K76.800x021","K76.800x022","K83.106","K71.900","K91.822","K81.002","S36.100x051","K75.001","K80.501","C24.900","K71.400x001","K83.805","K76.200","K86.808","D01.701","K83.811","K76.600x002","K74.600x034","C22.100","E83.102","K85.802","B15.901","Q44.702","K80.200x003","B16.001","K82.000","B65.900x004+K77.0*","S36.200x001","K74.612","D17.700x015","K74.617+I98.3*","K76.814","K82.804","B16.905","K86.106","B17.900x006","K80.503","T86.804","K76.401","Q85.911","K74.620+I98.2*","R16.000x001","K75.000x003","K70.401","K85.900","K70.301+I98.2*","Q44.003","T86.400x018","B17.900","K72.100","K75.100","B17.200x004","K82.900x002","K91.806","S36.100x021","B17.900x005","K91.823","K83.817","D37.603","K82.300","A01.000x011","K70.400x002","K85.200","K71.600x002","C77.204","B15.905","B17.204","K83.306","K85.801","K76.602","K83.100","K71.902+I98.2*","K85.816","B16.202","B19.901","B25.101+K77.0*","K83.803","K75.901","K83.302","B66.301","B77.800x004","K82.101","K76.600x007","K83.105","K86.101","B18.800x001","B18.901","B17.101","K75.805","E80.601","B15.000","K71.300x001","D13.500x003","K70.304+I98.2*","K74.611","K76.808","I82.001","D13.500","K80.301","K83.501","C24.000","K74.600x036","K83.009","K83.000","K80.405","K83.401","B16.100x003","B18.803","K74.608","K74.600x027","K74.600x029","K91.827","K83.304","B18.800x002","K74.300x008+I98.3*","K82.200","K82.800x004","B17.800x002","K71.104","R16.200x001","Q45.300x901","K85.815","K71.701","K85.818","K76.811","Q44.505","I82.000x001","K73.000x001","D01.501","B18.002","K76.700","K83.816","K85.809","B17.800x003","K71.100x008","K82.808","D37.700x003","K83.800x022","K76.810","K85.002","B18.104","D18.000x031","D01.500x001","K86.812","K82.304","K85.302","C22.301","K83.800x023","K74.607","C25.900","K86.814","K92.800x009","K80.400x004","Q44.500x005","K74.301+I98.2*","K83.902","B25.200+K87.1*","C22.700","K73.200x002","K80.304","K85.800x002","C24.004","K76.600x006","K83.004","K70.900","B18.105","T86.400x014","B17.202","B17.801","K83.820","B66.300x001","K85.902","B16.203","K86.800x015","K75.003","B15.002","K85.807","B65.904+I98.2*","K83.109","I87.109","K76.801","D37.600x001","K72.000x005","K82.800x002","K82.800x009","E80.600x005","K72.003","K82.801","K76.816","K71.700","K85.101","B17.200","A51.400x008+K77.0*","C24.800","K83.100x001","K83.802","K76.805","K80.506","K83.305","B67.000x001+K77.0*","K85.822","K83.107","K76.800x009","K80.300x002","R93.203","T86.400x013","K73.900","B66.902","B05.800x003+K77.0*","Q45.300x904","Q45.301","S36.100x013","K70.901","K80.404","S36.103","D13.400","K80.801","K86.806","K86.805","K82.805","K81.900","K91.800x304","K74.616+I98.2*","K74.302+I98.3*","K76.819","B18.804","M32.108+K77.8*","K71.200x001","K71.500x002","K74.600x041","K86.102","S36.111","K83.800x009","K74.613","S36.100x041","A42.803","K80.402","K91.800x407","Q44.700x004","K76.800x006","K83.808","K74.605","B16.901","B17.100x003","K76.800x015","D37.600x004","C24.003","T86.400x015","C25.000","K74.300x005+I98.2*","B18.004","K91.825","K74.603","K70.402","K74.615+I98.3*","B65.906+I98.3*","K83.818","D37.602","K83.006","K85.817","K85.000","S36.202","R93.205","K86.802","B45.800x001","K81.004","K75.401","K74.600x030","C25.800x001","K74.601","B17.900x004","B18.902","C25.100","K74.619+I98.2*","K80.002","A18.815+K87.0*","Q44.704","Q45.300x902","K83.300","B65.900x010+K77.0*","K86.100x004","K72.000x004","A06.400+K77.0*","K83.011","I74.803","K70.300","K80.303","B18.200","K86.300","Q85.900x019","B17.103","K81.801","K74.600x010","C24.002","B18.204","K86.803","Q27.805","K85.803","Q85.900x044","K74.600x021","C25.200","B18.202","K76.813","K81.003","K71.500x001","B19.002","Q44.200","B16.902","A52.705+K77.0*","K83.809","K86.818","K80.401","K83.013","K76.900x002","C22.000","K76.800x027","K85.813","K74.600x025","K86.800x001","S36.102","C78.806","K75.000","Q45.802","T81.800x006","K74.600x003","K76.806","K82.100x002","K75.800x006","K75.800x001","K76.000","K83.814","A18.816+K87.0*","K74.600x042","K81.000x008","R93.302","S36.112","K81.007","K74.602","Q44.301","R17.901","K86.804","B19.001","K70.306+I98.3*","K86.807","B19.000","Q44.001","S36.100x001","K86.813","B17.205","E80.600x008","B66.800x007","C78.808","I72.800x072","B49.x00x021","K71.100","K71.901","B26.802+K77.0*","S36.113","Q44.101","D01.503","E80.501","K76.601","K71.100x005","Q44.500x007","B18.900","K72.005","B18.900x006","K71.101","K83.100x008","K86.800x013","B65.903+K77.0*","D37.705","K76.807","A18.817+K87.1*","K71.002","S36.100x011","K75.810","Q44.100x002","C24.800x001","A50.000x002+K77.0*","K74.200","K70.303+I98.2*","B16.201","B18.107","D13.701","K81.000","B18.800x004","K75.803","B67.500x001+K77.0*","K75.200","A01.000x014","K81.008","Q44.400","I77.100x011","K86.100x001","K76.101","Q44.705","K74.606","A18.301","D01.700","K81.100","K73.901","K83.000x012","A01.001+K77.0*","K83.001","K76.500x002","K92.800x012","D13.700x001","T86.400x003","K83.000x007","K80.100x001","B17.203","K74.500","K83.010","B01.801","B15.902","K75.300","K76.500","K91.800x411","B18.100","K75.804","Q44.004","Q44.503","K72.904","K82.400","Q44.601","B17.800x001","S36.200x031","I74.800x016","K71.001","C25.300","K71.000x002","B19.900","I77.000x017","K70.000","K72.900x001","K86.815","S36.200x092","B69.802","K82.806","K81.006","B17.000","K83.301","B77.800x002","K86.801","B17.904","I86.809","K80.302","K86.901","C78.807","Q44.700x003","D13.500x001","C78.800x009","B16.000x001","S36.200x091","K76.901","B16.100x004","C25.803","E80.602","K86.200","K82.301","I87.108","K82.803","K80.202","R94.500","C78.700","B17.100","K73.801","Q44.002","B16.200","E80.600x007","B18.800x003","B17.903","K83.101","K74.300","K91.841","K71.702","K76.700x003","K86.816","Q44.100x003","B16.904","K81.900x001","K86.817","K80.500x002","K72.902","B15.903","I87.121","K85.814","K86.105","K83.018","T86.400x012","K76.300","K82.900x001","K85.001","T86.800x021","K65.007"};
        String[] dept_list={};
        if (!(true && Base.contains(mdc_zd,record.zdList[0]))){
            return "";
        }
        
        Base.groupMessages.putMessage(record.Index,"符合MDCH入组条件，匹配规则：主诊断匹配");
        String result;

        result=HB1.group(record);
        if (result.length()>0){
            return result;
        }

        result=HC1.group(record);
        if (result.length()>0){
            return result;
        }

        result=HC2.group(record);
        if (result.length()>0){
            return result;
        }

        result=HC3.group(record);
        if (result.length()>0){
            return result;
        }

        result=HC4.group(record);
        if (result.length()>0){
            return result;
        }

        result=HJ1.group(record);
        if (result.length()>0){
            return result;
        }

        result=HK1.group(record);
        if (result.length()>0){
            return result;
        }

        result=HL1.group(record);
        if (result.length()>0){
            return result;
        }

        result=HL2.group(record);
        if (result.length()>0){
            return result;
        }

        if (false && record.ssList!=null && record.ssList.length>0  && Base.intersect(Base.SS_VALID,record.ssList)){
            Base.groupMessages.putMessage(record.Index,"符合HQY入组条件，存在有效手术操作："+String.join(",",Base.Intersect(record.ssList,Base.SS_VALID)));
            return "HQY";
        }

        result=HR1.group(record);
        if (result.length()>0){
            return result;
        }

        result=HS1.group(record);
        if (result.length()>0){
            return result;
        }

        result=HS2.group(record);
        if (result.length()>0){
            return result;
        }

        result=HS3.group(record);
        if (result.length()>0){
            return result;
        }

        result=HT1.group(record);
        if (result.length()>0){
            return result;
        }

        result=HU1.group(record);
        if (result.length()>0){
            return result;
        }

        result=HZ1.group(record);
        if (result.length()>0){
            return result;
        }

        result=HZ2.group(record);
        if (result.length()>0){
            return result;
        }

        result=HZ3.group(record);
        if (result.length()>0){
            return result;
        }

        Base.groupMessages.putMessage(record.Index,"不符合MDCH的ADRG入组条件");
        return "";
    }
}

